#pragma once
#include <QString>


namespace NOpenHardwareMonitor {

namespace NHardware {


class IHardware;


class IComputer
{
protected:
	~IComputer() {  }


public:
	virtual void Open() = 0;
	virtual void Close() = 0;
	virtual void Release() = 0;


public:
	virtual QString GetReport() const = 0;

	virtual bool IsCPUEnabled() const = 0;
	virtual void CPUEnable(bool Enable) = 0;

	virtual bool IsGPUEnabled() const = 0;
	virtual void GPUEnable(bool Enable) = 0;

	virtual bool IsHDDEnabled() const = 0;
	virtual void HDDEnable(bool Enable) = 0;

	virtual bool IsMainboardEnabled() const = 0;
	virtual void MainboardEnable(bool Enable) = 0;

	virtual bool IsRAMEnabled() const = 0;
	virtual void RAMEnable(bool Enable) = 0;

	virtual bool IsFanControllerEnabled() const = 0;
	virtual void FanControllerEnable(bool Enable) = 0;

	virtual qint32 GetHardwareCount() const = 0;
	virtual IHardware* GetHardware(const qint32& Index) = 0;
};

}}


